package com.merlin.security.demo.web.dto;

import com.fasterxml.jackson.annotation.JsonView;

/**
 * 接下来详细介绍@JsonView这个注解的使用。
@JsonView的使用步骤
    使用接口来声明多个视图
    在值对象的get方法上指定视图
    在Controller方法上指定视图
对于上面的步骤，进行如下解释如下：
一般对Java对象进行序列化Json的时候，会考虑到只序列化部分字段，那么就可以使用@JsonView这个注解。
在这里使用User实体类进行举例，首先，在实体类上定义两个接口，第一个接口是简单视图（UserSimpleView），
表示之序列化username这个字段，而第二个接口是详情视图（UserDetailView extends UserSimpleView），
表示不仅序列化username字段，还序列化password字段。然后使用@JsonView注解将两个视图绑定到对应的字段的get方法上面，
由于UserDetailView继承了UserSimpleView这个视图，所以在Controller方法上使用UserDetailView视图的时候，
会同时序列化两个字段，而使用UserSimpleView的时候仅仅只会序列化username这一个字段。下面进行代码展示：
 * @author Merlin
 *
 */
public class UserJson {

	public interface UserSimpleView {}

    public interface UserDetailView extends UserSimpleView {}

    private String username;

    private String password;

    @JsonView(UserSimpleView.class)
	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	@JsonView(UserDetailView.class)
	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}
    
    
    
}
